Code review is the examination of source code for mistakes overlooked by the code's author. Code review is an important procedure for improving the overall quality of software and is cost-effective because it is less expensive to find and fix mistakes before they become part of a product. Nonetheless, existing code review techniques are inefficient because they: 1) allow the code reviewers to treat all types of source code mistakes equally or ignore some of the coding standard violations; and 2) lack a systematic way to assign appropriate code reviewers.
Existing code review procedures are inefficient because they ask code reviewers to treat coding standard violations and logic mistakes equally or ignore some of these coding standard violations. Coding standard violations are deviations from a set of guidelines for a specific programming language that primarily prescribe a programming style. In contrast, logic errors are mistakes in a program that causes it to operate incorrectly. While coding standard mistakes can be easily detected by automated tools, logic mistakes are more easily detected by experienced code reviewers. Asking code reviewers to focus on both types of mistakes is time-consuming and wasteful.
Existing code review techniques are also inefficient because they don't systematically select the appropriate code reviewer for a particular software module. The appropriate reviewer is someone who is familiar with the software module—typically the module's owner or his peer. Assigning reviewers who are unfamiliar with the module is inefficient because the reviewer faces a steep learning curve and could be error-prone since the reviewer may conduct a less accurate review.